响应式架构
问题传统架构
线程池预先创建大量线程,一个请求绑定一个线程
一般一个线程需要1M左右的内存
且线程切换需要耗时
所以,内存开销与时间开销会随着线程量而增大
大量资源开销在线程的管理上
异步调用
发生阻塞后告诉系统,让当前线程先做别的事情,阻塞结束再提醒系统
Callback
回调地狱
响应式编程
发布和订阅
backpressure 背压
控制流速,避免大量数据的接受
协商
订阅者通过自己的能力来通知发布方的通知数量
一些知识函数式接口可有多个重载
使用lambda表达式时可指定参数类型来判断使用哪个方法
常用函数式接口
supplier 0输入,1输出
consumer 1输入, 0输出
function 1输入,1输出
unaryOperator 同类型的1输入1输出
BiFunction 2输入,1输出
流编程注意中间操作是不会执行的, 只是一个声明, 一个流编程必须有一个终止操作才会执行
且在流编程中,终止操作只能有一个, 中间操作0-n个
Project Reactorpublisherflux发布0-n个对象
创建方式
1234567Flux.just(1,2,3,4, ...
arm架构linuxdeploy使用selenium
linuxdeploy使用selenium参考文章https://blog.csdn.net/nopname/article/details/99484475
由于我的手机是arm架构,而谷歌浏览器没有提供arm版本,所以使用firefox2.系统:Ubuntu
安装
apt install firefox-esr # 安装火狐浏览器
sudo apt-get install iceweasel xvfb -y # 虚拟显示
sudo pip3 install selenium==2.53.6 pyvirtualdisplay pytest
安装驱动 i. 驱动下载:Release v0.23.0 · mozilla/geckodriver (github.com) ii. 其中v0.23.0还提供arm版本,后面的版本就没有arm的了 iii. 使用wget 下载: 1) 没有wget:apt-get install wget iv. 12345wget https://github.com/mozilla/geckodriver/releases ...
linux_deploy安装并ssh连接教程
参考教程https://blog.csdn.net/weixin_40842492/article/details/107288522https://www.jianshu.com/p/687ba1e11ab5https://pluhuxc.github.io/2020/10/23/linuxdeploy-guide.html同时本文中一些图片来自于这些教程
准备工作机型选择这里建议采用配置较高,安卓版本较新且内存较大的手机,最好支持内存卡扩展的手机。本案例使用的机型为小米3移动版,该机型安卓版本较旧,所以在找合适的Linux deploy版本时花了不少时间。且该机型不支持内存卡扩展。该机型安卓系统为4.4.4,miui8开发版。
手机root其他机型的手机请自行搜索root方法,小米手机需要系统为开发版,如果你的手机为稳定版请手动刷成合适的开发版。切记刷成开发版之后不要再点击升级系统了,不然很大可能会升成稳定版。小米手机开发版可以直接获得root权限。之后需要给busybox和linux deploy root权限。
busybox 下载busybox一 ...
edge浏览器使用pyecharts_snapshot_selenium渲染成图片
pyecharts渲染成图片
snapshot-selenium 是 pyecharts + selenium 渲染图片的扩展,使用 selenium 需要配置 browser driver,这部分可以参考 selenium-python 相关介绍,推荐使用 Chrome 浏览器,可以开启 headless 模式。目前支持 Chrome, Safari
由于个人用的浏览器是edge,但selenium-python不支持edge,所以做了如下配置:
下载edge web driver:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
将解压得到的文件放入一个文件夹中,将其中的exe文件重命名为MicrosoftWebDriver.exe, 然后将此文件夹放入path环境变量
对snapshot源码做一点修改,添加edge相关的配置,期间通过查看webdriver的init文件得知获取edge浏览器驱动的方法为webdriver.Edge():
传入browser参数:
运行结果
...
一个cmd快捷小工具的开发
原因本意是想通过cmd窗口更快的启动一些软件或者文件夹,之前使用dos命令编写一个一个的bat文件放入一个文件夹中,然后将整个文件夹放入path环境变量中,但这样每次想要添加一个新的快速启动的内容都比较麻烦,于是就想写一个小工具来实现更便捷的使用。
C实现语言选择选择了c语言,一是用java的话不太符合快速启动的初衷(我只学过这俩),二是顺便可以复习一下已经差不多还给老师的c。
工具选择之前跟随老师使用的vc++6.0,但前几天刚卸载,同时也想尝试一下新的工具,最后选择了Devcpp,使用下来感觉还行,主题选择挺好玩。
需求分析12345678910111213/** 需求分析* 在一个文件中添加文件名与路径还有自定义启动参数 * 此程序带参数 s 启动后会输出一个列表:* -------------QuickStart-------------* ID name parameter path * 1 test test E/test/test.exe * 2 test1 test1 E/test/test.exe1 * 3 test ...
JavaWebSession空指针异常
单独调试的时候数据库可以连接,表也可以成功创建,但通过servelet访问时就会发生找不到数据库驱动类以及session空指针的问题,经过一下午调试,终于明白原来需要将jdbc驱动导入webinf中的lib中,而不是说仅仅导入项目就行。
遇到的其他问题:1. hibernate核心配置文件中,访问数据库的链接需要针对不同的数据库驱动
sqlserver的数据库链接配置为:
<property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=webtest1</property>
2. jsp中action填写servlet的url,而不是name
Java多态
什么是多态• 接口的多种不同的实现方式即为多态。• 多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术。• 我们在程序中定义的引用变量所指向的具体类型和通过该引用变量的方法调用在编程的时候并不确定,当处于运行期间才确定。就是这个引用变量究竟指向哪一个实例对象,在编译期间是不确定的,只有运行期才能确定,这样不用修改源码就可以把变量绑定到不同的类实例上,让程序拥有了多个运行状态,这就是多态。• 其中:不用修改源码就可以把变量绑定到不同的类实例上,让程序拥有了多个运行状态,这就是多态。
多态又分为 编译时多态和运行时多态。编译时多态:比如重载运行时多态:比如重写
参考链接:https://www.jianshu.com/p/68ddb5484ca2
多态的三个条件• 继承• 重写• 父类引用指向子类对象:Parent p = new Child();
Java中除法结果的类型
代码123456789101112131415161718192021222324252627public class TTESSTT { public static void main(String []args) { int i0 = 15; int i1 = 10; double i2 = 15.0; double i3 = 10.0; Object j0 = i0 / i1; Object j1 = i0 / i3; Object j2 = i2 / i3; Object j3 = i2 / i1; Object j4 = i1 / i0; System.out.println( "j0:"+j0+" "+j0.getClass()+ "\nj1:"+j1+" "+j1.getClass()+ "\nj2:"+j2+" "+j2.getClass()+ "\nj3:" ...
Linux
常用快捷键
按键
作用
ctrl+d
键盘输入结束或退出终端
ctrl+s
暂停当前程序
ctrl+z
当前程序放到后台运行,恢复到前台为fg
ctrl+a
将光标移到行头,相当于home
ctrl+e
相当于end
ctrl+k
删除从光标到行末的内容
alt+Backspace
删除一个单词(不是字母)
shift+PgUp
终端向上
shift+PgDn
终端向下
Shell中常用的通配符
字符
含义
*
匹配0或多个字符
?
匹配任意一个字符
[list]
匹配list中任意单一字符
[^list]
匹配list之外的字符
[c1-c2]
匹配c1到c2中任意单一字符如 [0-9]
{s1,s2,……}
匹配其中一个字符串
{c1..c2}
匹配全部字符
Linux的目录结构
/bin
Binary的缩写,存放着最经常使用的命令
/sbin
super bin, 存放系统管理员使用的系统管理程序
/home
存放普通用户的主目录,其中每个linux用户都有自己的 ...
C语言基础
C程序设计语言基本构成数据成分数据类型
整型
int
short
long
32b
16b
32b
c语言中规定:long型不短于int型、short型不长于int型
如何查看某个类型的大小:sizeof()运算符
1cout<<"sizeof(short int)="<<sizeof(short int)<<endl;
计算机中存储整数使用补码的形式:正整数的反码和补码都是原码负整数的补码为反码加一负整数的反码为除符号位外全部取反
-
八进制
十进制
十六进制
控制符
oct
dec
hex
前缀
0
0x
12int a = 10;cout<<hex<<a<<endl;
int型在无符号的情况下最大可存储42亿左右,有符号的情况下可存储21亿有符号的情况下,当最高位是1,其他位是0,则1即表示符号位也表示数字位:-2147483648
浮点型
-
float
double
long double
存储
32b
64b
64b
...