- 博客(19)
- 收藏
- 关注
原创 JAVA 多线程 CAS与AtomicInteger (猴子取苹果)
CAS(乐观锁)CAS指令有三个操作数,分别是内存位置(在Java中可以简单的理解为变量的内存地址,用V表示),旧的预期值(用A表示)和准备设置的新值(用B表示)。CAS指令在执行的时候,当且仅当V符合A时,处理器才会用B更新V的值,否则它就不会执行更新。自旋操作(即不可重入)compareAndSet,compareAndExchange,compareAndSwap 通过比较判断前后的值是否相等来进行更新操作。(1)ABA问题?1.在多线程的环境中,线程a从共享的地址X中读取到了对象A。2.在
2022-02-15 17:43:09 389
原创 Java 多线程 ReetrantLock 猴子取苹果(交替 无法取则退出)
猴子取苹果问题共计9个苹果,有2只猴子,一个猴子每次拿2个苹果,一个猴子每次拿3个苹果,如果剩余的苹果不够猴子每次拿的数量,则2只猴子停止拿苹果,两只猴子依次拿取苹果。请用java多线程模拟上面的描述注意需要两个thread都打断循环线程才能结束退出。package com.zkk;import java.util.Random;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Reent
2022-02-15 16:39:35 692
原创 Rust 精通 多维数组 ndarray
ndarray 依赖Cargo.toml 文件加入:[dependencies]ndarray = "0.15.3"ndarray 具体函数可参考https://blog.csdn.net/wsp_1138886114/article/details/108635600一、向量Vec 与 Array互转extern crate ndarray;use ndarray::{concatenate, s, Axis, Array, Array2, Array3};fn main(){ l
2021-08-16 16:21:11 1783
原创 Rust 实用处理Json文件避坑 之serde_json
依赖导入Cargo.toml文件添加:[dependencies]serde = "1.0.117"serde_derive = "1.0.117"serde_json = "1.0.59"rs文件 添加:extern crate serde;extern crate serde_json;脏数据问题serde::Value 带来的脏数据问题,使得导入二维数组或者数字类型数据会无法处理let f = File::open("./test.json").unwrap();let v
2021-08-15 19:50:36 5471
原创 Rust 迭代器适配map()
迭代器:iter()适配器Map() 使用:map: 可以为迭代器的每个项都应用一个闭包let mut nums = vec![1, 2, 3, 4, 5];let nums1 = nums.iter().map(|x| x % 2);println!("nums1{:?}",nums1 );运行结果nums1Map { iter: Iter([1, 2, 3, 4, 5]) }直接将其返回并不会让map闭包实现对其进行更改解决由于迭代器的惰性,什么也不会发生,所以需要使用消费迭代
2021-08-15 18:59:44 2225
原创 Vue 跨域问题解决
Vue 跨域问题解决vue框架目录:ProxyTablepathRewrite:是使用proxy进行代理时,对请求路径进行重定向以匹配到正确的请求地址,其中^是正则中限定开头,则是/api为开头的将其重写,如下例子中,’/api’ 重写为’/api/’。真实的路径是target+代理端口(若有重写,则用重写的) dev: { // Paths assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTa
2021-04-05 16:38:16 711 1
原创 python-lambda(匿名函数)原理与应用
lambda 匿名函数lambda匿名函数,提高了代码的精简度单一参数f=lambda x:(x*10)print(f(1))print(f(2))运行结果如下:lambda返回的是个匿名的函数,我们调用的时候需要用函数的调用方式。其中x相当于传入的参数,:后面的是函数体,最好返回元组或者列表多个参数f=lambda x,y:(x*y)print(f(1,3))print(f(2,4))f=lambda x,y:(x*y,x+y)print(f(1,3))print(f(2
2020-09-04 10:48:04 674
原创 thinkphp6 实用Db事务处理(避开大量数据库操作的坑)
DB事务处理thinkphp6上最好有进行数据库语句操作都加上事务处理,事务处理可以对数据库进行隔离,acid(原子性,一致性,隔离性,持久性)原子性(Atomicity)事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。一致性(Consistency)事务在完成时,必须使所有的数据都保持一致状态。隔离性(Isolation)由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。持久性(Durability)事务完成之后,它对于系统的影响是永久性的。操作
2020-09-01 16:54:58 2268
原创 thinkphp6 使用PhpOffice导入Excel表格(上传文件)
导入表格样式注意这里的button的id与js中的#elem需要对应 <form enctype="multipart/form-data" action="" method="post" class="layui-form"> <div class="layui-upload"> <button type="button" class="layui-btn layui-btn-normal" id="test8">选择文件&
2020-09-01 16:45:20 3481
原创 python-selenuim 爬虫 模拟ajax获取动态数组并爬取json
数据被隐藏的ajax按F12,然后选择Network,选择需要操作的动作,点击后,观察下方的变化例如选择日期去爬虫,selenium这种被隐藏的数据无法直接获取,需要我们去寻找ajax传送的请求,获取返回的json,对json进行解析处理来获取我们想要的内容由于是ajax请求的数据,会有显示传送的字段再请求的url上我们通过在Header 查看我们需要访问的url然后尝试变更日期date,同时可以尝试将token删去,因为登陆状态已默许,可以删去一些不必要的参数,这个需要自己根据自己的情况
2020-09-01 15:42:10 1140
原创 thinkphp6 Html页面上调用控制器传来的值
循环遍历数组一维数组上$res-各字段<html>...省略{foreach $res as $key=>$v} <td>{$v.字段名}</td> <td>{$res.key.字段名}</td> <td>{$key}</td>{/foreach}...省略</html>二维数组上(包含字段以及包含一维数组)$res - $detail(detail是一维数组)$res -各字
2020-09-01 13:46:38 1402
原创 Python中*args、**kws 理解与使用(可变参数以及关键字参数)
函数中的可变参数和关键字参数使用可变参数*arg在python的底层提前装包好,将数据装入元组中,若没有数据就是空元组。可以一次接受多个数据,不需要预先定义好需要接受参数的个数。def func(*argc): print(argc) print('---------') for item in argc: print(item,end=' ')func(1,2,3,[2,3,4],(5,6,7))运行结果如下:如果想对列表进行‘解包’,则在调用的时候
2020-09-01 13:25:17 1536
原创 python- selenium 淘宝爬虫之滑块验证(滑动速度放慢版)
selenium滑块破解actionchains是selenium里面专门处理鼠标相关的操作通过前一篇关于爬虫的xpath定位我们可以获取滑块,并判断是否有滑块from retrying import retry...其他def get_track(distance, t): # distance为传入的总距离,a为加速度 track = [] current = 0 mid = distance * t / (t + 1) v = 0 while cur
2020-08-31 18:03:43 9227 9
原创 python+selenium+xpath实用,避坑,爬虫篇
seleniumselenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器。结合谷歌驱动,实现爬取数据。谷歌驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/在谷歌浏览器上输入chrome://version/,可以看到自己谷歌对应的版本,并下载对应的谷歌驱动对应版本的84.0.4147对应上即可,后面的只是这个版本修复的次数。设置谷歌驱动参数option = webdriver.ChromeOptions()option.add_
2020-08-27 17:21:59 1362
原创 Echarts之实时更新折线图,举一反三,避开坑
下载Echarts下载地址:https://echarts.apache.org/examples/zh/index.html尽可能都全选,然后回下载下来js文件echarts.min.js文件,并导入hmtl中 <!--引入js文件--> <script type="text/javascript" src="路径/js/echarts.min.js"></script> ...省略 <div class="layui-card" s
2020-08-25 17:41:02 2230 1
原创 前端jquery之ajax响应
Ajaxajax是与服务器交换数据并更新部分网页获取html中控件,可以采用id获取<html><body>...省略 <input class="layui-input" placeholder="日期" name="date" id="date" value={$date}> <input class="layui-input"name="some_name" id="some_name1" value={$some_name}> ..
2020-08-24 22:54:50 266
原创 layui-复选框,实现多选,全选
layui-全选checkbox全选,其中lay-filter是点击会自动响应,<input type="checkbox" lay-filter="checkall" name="" lay-skin="primary"><tbody> ...省略 {foreach $res as $row} ...省略<input type="checkbox" name="id" value='' class='checkone' lay-skin="primary"&g
2020-08-24 22:43:42 5457
原创 easyadmin-layui表格一个单元格存多条数据
easyadmin-js-layui表格templet是自定义列模板,模板遵循 laytpl 语法。这是一个非常实用的功能,你可借助它实现逻辑处理,以及将原始数据转化成其它格式,如时间戳转化为日期字符等。可以利用templet来格式化表格数据,返回的是html格式,对templet进行改写,返回这一列的单元格多样化index控制器//在list中增加字段,再返回list给jsforeach($list as $key=>$v){ $total_ww=Db::name('表格')-&
2020-08-24 22:04:12 1430
原创 layui-树型选择器
layui树型选择器下载treeSelect.js到项目中:数据库上表中必须要有id,和pid,其中pid是父亲节点,存在值为0,就是根,其他字段都可以随意。前端上//前端页面上<input type="text" name="href" id="tree_cat" lay-verify="required" lay-filter="tree" value="" lay-reqtext="选择框的默认提示内容" class="layui-input" >// 前端scrip
2020-08-24 10:12:02 1524
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人