Amp

oracle中的encrypt_des加密对应Java的加密方式

只谈情不闲聊 提交于 2020-08-12 01:12:20
一、oracle中的加密函数encrypt_des create or replace function encrypt_des(vi_data varchar2) return varchar2 is --加密 vr_data varchar2(4000); vr_enc varchar2(4000); raw_input RAW(128); key_input RAW(128); decrypted_raw RAW(2048); vr_key varchar2(64); begin if vi_data is null then return null; end if; select MOBILEKEY into vr_key from CENKEY; vr_data := rpad(vi_data, (trunc(length(vi_data) / 8) + 1) * 8, chr(0)); raw_input := UTL_RAW.CAST_TO_RAW(vr_data); key_input := UTL_RAW.CAST_TO_RAW(vr_key); dbms_obfuscation_toolkit.DESEncrypt(input => raw_input, key => key_input, encrypted_data => decrypted_raw); vr

设置Echarts鼠标悬浮样式

倖福魔咒の 提交于 2020-08-11 23:37:42
tooltip: {//自定义tip show: true, trigger: 'axis', show: true, //default true showDelay: 0,//显示延时,添加显示延时可以避免频繁切换 hideDelay: 50,//隐藏延时 transitionDuration: 0,//动画变换时长 backgroundColor: 'rgba(0,0,0,0.7)',//背景颜色(此时为默认色) borderRadius: 8,//边框圆角 padding: 10, // [5, 10, 15, 20] 内边距 position: function (p) { // 位置回调 // console.log && console.log(p); return [p[0] + 10, p[1] - 10]; }, formatter: function (params, ticket, callback) { // console.log(params); var tip = "上报时间" + ' : ' + params[0].name + "<br/>"; for (var i = 0, l = params.length; i < l; i++) { if(params[i].seriesName=='温度'){ tip += '<br/>' + '

一场关于系统架构的讨论

旧巷老猫 提交于 2020-08-11 21:39:14
背景 公司新业务有视频点播与直播需求,经过一番对比分析,最终选择了腾讯云作为视频服务的供应商。 对于如何接入有如下争论点: 1.由中台统一对接视频服务,封装统一对外接口,如后续要切换视频服务供应商,上层无需更改 一致点: 统一封装对外服务 争议点: 要不要做到可无缝切换视频播放供应商而不影响上层业务 2.APP与WEB侧基于腾讯视频上传&播放SDk封装通用组件 一致点: 统一封装SDK 争议点: 封装粒度是强封装还是弱封装。即隐藏内部实现,只暴露自定义参数;还是组件参数透传腾讯SDk相关参数,只简单封装通用业务逻辑 对于上述争议点,会议最终也没讨论出结论来。个人觉得,这两个争论点实际上是一个业务架构问题与技术架构问题,只有把这两个问题理清楚,才能做出清晰的判断。 业务架构 业务架构:实际上就是理清各方如何分工,如何交互,如何设计的问题。 对于该场景的有两种架构方式,一种为中控式、一种为并行式。 中控式 中控式可理解为由一个中枢统一控制,大致结构图如下所示: 核心思路: 由中台统一对接视频服务,抹平各服务商的差异,做到底层视频服务切换对上层无感知 好处: 视频服务切换,对业务方无影响,无额外开发工作量 难点&弊端: 视频服务灰度切换问题 中台需抽象化视频服务为共有服务,制定自有功能与交互逻辑;功能取交集,无法使用特有视频服务独有亮点功能 中台逻辑复杂化,兼容维护成本高,不易迭代

指针结构体

China☆狼群 提交于 2020-08-11 20:22:02
https://juejin.im/post/5ca2f37ce51d4502a27f0539 type Member struct { id int name, email string gender, age int } func TestChange(t *testing.T) { m1 := Member{} m2 := new(Member) Change(m1, m2) //值传递,这里需要传指针才有效 fmt.Println(m1, m2) //{0 0 0} &{0 小红 0 0} } func Change(m1 Member, m2 *Member) { m1.name = "小明" m2.name = "小红" } func TestMember(t *testing.T) { var m1 Member //所有字段均为空值 var m2 = &Member{} var m3 = new(Member) var m4 = &m1 m1.age = 12 m2.age = 13 m3.age = 14 m4.age = 145 t.Logf("%T %v", m1, m1.age) t.Logf("%T %v", m2, m2.age) t.Logf("%T %v", m3, m3.age) t.Logf("%T %v", m4, m4.age) } 来源:

Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)

早过忘川 提交于 2020-08-11 18:57:19
阅读目录 一、前言 二、翻译正文 1、两种实现方式 2、BSD 的选择 3、Linux 的选择 4、linux实现中, accept 队列满了怎么办 5、问题延伸 4、Stevens老爷子的建议 三、译文的测试验证 1、服务端程序 2、客户端程序 3、客户端请求发送5次,填满 accept 队列 5、测试tcp_abort_on_overflow 参数 5、服务端正常accept时的连接情况 四、简单总结 五、 Tomcat 、nginx、redis中如何设置 backlog 1、tomcat 2、nginx 3、redis 回到顶部 一、前言 这两天看tomcat,查阅 tomcat 怎么承载高并发时,看到了backlog参数。我们知道,服务器端一般使用mq来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理。其实操作系统已经帮我们做了一些类似的东西了,这个东西就是backlog。服务端一般通过 accept 调用,去获取socket。但是假设我们的程序处理不过来(比如因为程序bug,或者设计问题,没能及时地去调用 accept),那么此时的网络请求难道就直接丢掉吗? 当然不会!这时候,操作系统会帮我们放入 accept 队列,先暂存起来。等我们的程序缓过来了,直接调用 accept 去 队列取就行了,这就达到了类似mq的效果。 而 backlog,和另一个参数

计45班杨云鸿的模拟题

风流意气都作罢 提交于 2020-08-11 18:36:16
第一题: 倒叙输出1000以内的3与7的公倍数。 第二题: 定义一个函数,传入一个100以内的整数,输出从1开始加到这个数的和。 比如传入4,输出1+2+3+4的和10 比如传入99,输出1+2+3+……+99的和4950 第三题: 有一个数组[16, 3, 8, 2, 0, 8, 12, 21, 18, 32, 26, 59, 27, 65, 41];通过程序输出这个数组所包含数字的方差。 let y = [18, 4, 24, 23, 2, 38, 19, 22, 38, 42, 23, 39, 17, 15, 40]; let u = y.length; let o = 0; for (let i = 0; i < u; i++) { o += y[i];} let p = o / u; console.log(p); 第四题: 自幂数指:一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。 比如: n=3时:371 = 3×3×3 + 7×7×7 + 1×1×1,是自幂数。 n=4时:9474 = 9×9×9×9 + 4×4×4×4 + 7×7×7×7 + 4×4×4×4,是自幂数。 n=2时:31 ≠ 3×3 + 1×1,不是自幂数; 通过编写程序,判断出10000以内的全部自幂数,并全部push进一个自定义数组。 输出这个数组。 第五题: 编写一个函数

Apk应用安全加固所需了解的Application启动流程

一曲冷凌霜 提交于 2020-08-11 18:08:07
本文使用Android Q(API 29)版本源代码进行讲解 很多人认为Android应用加载入口是Application的onCreate,实则不然。当点击进入应用时,Zygote进程会fork出一个独立进程, 通过RuntimeInit#findStaticMain找到ActivityThread#main并在ZygoteInit#main中进行调用 郑州哪家不孕不育医院好:http://www.zztjby.com/ // ZygoteInit#main public static void main(String argv[]) { .... Runnable caller; try { .... // 最终会调用到findStaticMain caller = zygoteServer.runSelectLoop(abiList); } catch (Throwable ex) { .... } finally { .... } .... if (caller != null) { caller.run(); } } public class RuntimeInit { protected static Runnable findStaticMain(String className, String[] argv, ClassLoader classLoader) {

Linux下diff命令用法详解

徘徊边缘 提交于 2020-08-11 17:33:56
大家好,我是良许。 我们在平时工作的时候,经常要知道两个文件之间,以及同个文件不同版本之间有何异同点。在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也有很多很强大的工具,良许之前也写过一篇文章介绍: Linux下9种优秀的代码比对工具推荐 这些比对工具其实都是基于 diff 命令,下面就详细介绍一些 diff 命令的用法。 diff 命令是一个分析文件信息的命令,可以打印出文件之间的差异。它可以逐行地比较两个文件的内容,也可以递归地比较文件夹的内容。 diff 命令的输出内容可以让我们知道要使两个文件相同需要做哪些修改,这对于我们的工作很有帮助。 在开始前,我们先用文件编辑器创建两个内容相同的文件。这里我们使用的是 nano 。 $ nano diffsample1 输入内容: 发布 优质的 技术文章 使用 Ctrl + X 和 Y 保存并退出。 创建第二个文件: $ nano diffsample2 输入同样的内容并保存退出。 需要注意的是,空格和 Tab 对两个文件是否完全相同会有影响。 使用 diff 命令查看两个文件是否有差异: $ diff diffsample1 diffsample2 这时 diff 命令没有输出任何信息,说明这两个文件的内容是完全相同的。 现在我们对 diffsample2 做一些修改,将 文章 改为

实时美颜摄像并生成H264视频流

倾然丶 夕夏残阳落幕 提交于 2020-08-11 16:34:54
为什么美颜摄像这么简单的功能, OpenCV 这个开源项目网上很少有代码呢?对于在 windows 平台下,生成 h264 视频流也比价麻烦,没有现成的 api 可以使用,需要借助 MinGw 编译 libx264 ,或者 ffmpeg 才能使用。 图玩智能为企业提供 提供更优质、更稳定的美颜产品及服务,欢迎随时咨询 www.toivan.com. 要推送直播视频流 , 现在先做到下面几个步骤: 1.OpenCV 捕捉摄像头的图像 2. 进行识别需要美颜的部分(人脸识别,肤色识别) 3. 进行美颜(提升亮度,直方图均衡,滤波) 4. 生成YUV视频 5.生成h264 主要功能代码: /** Global variables */ //-- Note, either copy these two files from opencv/data/haarscascades to your current folder, or change these locations string face_cascade_name = "haarcascade_frontalface_alt.xml" ; CascadeClassifier face_cascade; CascadeClassifier eyes_cascade; string window_name_onlyface =

C++ 九阴真经之输出使用时间

我是研究僧i 提交于 2020-08-11 16:15:47
#pragma once #include <chrono> #include <string> #include <iostream> namespace cho = std::chrono; //使用高精度计时器 //计时器 class CTimeMeter { public: CTimeMeter() ; // reset方法 void Reset(); // 输出经过的时间,定义为模板函数 template<typename Duration=cho::milliseconds> // 默认输出毫秒ms int64_t Elapsed() const { return cho::duration_cast<Duration>(cho::high_resolution_clock::now() - m_startTime).count(); } // 输出微妙 int64_t ElapsedMicroseconds(); // 输出纳秒 int64_t ElapsedNanoseconds(); // 输出秒 int64_t ElapsedSeconds(); // 输出分minute int64_t ElapsedMinutes(); // 输出时hour int64_t ElapsedHours(); private: cho::time_point<cho::high