Java内存模型
Java内存模型由几部分组成,堆、本地方法栈、虚拟机栈、方法区…
每一次我不想打断他们的话,虽然我知道这又是一个误会了我的问题的朋友。
其实,我想问的Java内存模型,是和并发编程有关的。而候选人给我回答的那叫JVM内存结构,完全是两回事。
很多时候,在我没有打断他们的情况下,一部分人慢慢的讲到了GC相关的知识。这种情况下,我只能硬着头皮继续问一些和JVM有关的知识。
但是,我的本意其实是想看一下他对Java并发有多少了解啊。
经常,我都在继续追问了一些他们回答的”Java内存模型”相关的知识后,友善的提醒一句,其实我想问的Java内存模型并不是他回答的这个…
有的时候,我会进一步提醒一句:是和并发编程有关的,是和主内存以及线程工作内存有关的。。。
那么,本文就来简单说一说,关于Java内存模型,到底应该如何回答这个面试题。
1
为什么会误解
首先,我们先来分析一下问什么很多人,甚至是大多数人会答非所问呢?
我觉得主要有几个原因:
1、Java内存模型,这个词听着太像是关于内存分布的知识了。听上去和并发编程没有半毛钱关系。
2、网上很多资料都是错的。不信你去网上搜索一下”Java内存模 ...
零基础如何学习 Web 安全?
“安全帮”专注于信息安全教育 “www.secbang.com”一.开始前的思考1.我真的喜欢搞安全吗?2.我只是想通过安全赚钱钱吗?3.我不知道做什么就是随便。4.一辈子做信息安全吗 这些不想清楚会对你以后的发展很不利,与其盲目的学习web安全,不如先做一个长远的计划。否则在我看来都是浪费时间。如果你考虑好了参照我的计划进行学习,我不敢保证你实践完多牛逼,但是找5k-8k的工作绝对不成问题。
1.目的本问目的是带大家快速入门web安全,不会搞些虚张声势的东西都是我的学习经验. 不会涉及到特别详细的技术,而是指导你去如何系统的学习少走弯路,节约时间。要有自信。不要觉得任何人和任何事有多牛逼,不低估自己,不高估别人。认真学习。
2.经验我们在学习web安全或者任何东西时都需要分阶段专注学习,比如研究XSS那么这段时间大部分精力只研究XSS。XSS通常结合CSRF来达到更好的利用效果,但是不要把太多时间放到csrf上,研究透彻xss后在研究下一个漏洞类型,要有重点的研究东西。
3.多看书和分析文章学习代码审计时我认为最有效的方法,先去阅读相关的书籍然后找两篇分析0 ...
oracle 查看正在执行的sql
1、查询Oracle正在执行的sql语句及执行该语句的用户
SELECT b.sid oracleID,b.username Oracle用户,b.serial#,spid 操作系统ID,paddr,sql_text 正在执行的SQL,b.machine 计算机名FROM v$process a, v$session b, v$sqlarea cWHERE a.addr = b.paddrAND b.sql_hash_value = c.hash_value;
2、查看正在执行sql的发起者的发放程序
SELECT A.serial#,OSUSER 电脑登录身份,PROGRAM 发起请求的程序,USERNAME 登录系统的用户名,SCHEMANAME,B.Cpu_Time 花费cpu的时间,STATUS,B.SQL_TEXT 执行的sqlFROM V$SESSION ALEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESSAND A.SQL_HASH_VALUE = B.HASH_VALUEORDER BY b.cpu_time DESC
3.Or ...
oracle 11g数据库的ORA-00031 锁表问题
ora-00031:session marked for kill处理oracle中杀不掉的锁
一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
查询哪些对象被锁select object_name,machine,s.sid,s.serial#from v$locked_object l,dba_objects o ,v$session swhere l.object_id = o.object_id and l.session_id=s.sid;
杀死一个进程alter system kill session ‘24,111’; (其中24,111分别是上面查询出的sid,serial#)
os一级再杀死相应的进程如果利用上面的命令杀死一个进程后,进程状态被置为”killed”,但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:select spid, osuse ...
oracle 11g数据库的ORA-00054 锁表问题
问题描述今天在用hibernate进行建表操作时第一次建表成功,但之后发现POJO类的映射文件有问题,就进行了几次修改,之间将建表的代码又运行了几次,结果就在控制台报出了“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”的错误,数据也插入不了,于是我就去oracle数据库的可视界面(sqldeveloper)想将之前建成的表手动删除,结果还是报“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”这个错误,之后才搞清楚原来是对表的操作短时间内太过快速和频繁而导致的数据库锁表。即由于其他Session已经对目标表做了操作,并且已经有排他锁在表上了,所以新的Session无法再对表进行DDL操作。
解决方法在system登录的情况下执行如下操作:
1.查询被锁的会话ID:
select session_id from v$locked_object;
查询结果:SESSION_ID——-92.查询上面会话的详细信息:
SELECT sid, serial#, username, osuser FROM v$sess ...
springboot项目中使用filter无法注入bean
springboot项目中使用filter踩坑
问题:使用@WebFilter无法注入bean问题原因: web容器加载顺序导致, 加载顺序是listener——filter——servlet,当项目启动时,filter先于servlet初始化, 而Spring中默认bean的初始化是在Servlet后进行的,所以会注入失败。
解决方式: 1、 如果是web.xml配置, 可将Spring容器改成Listener方式初始化:org.springframework.web.context.ContextLoaderListener。 2、 使用FilterRegistrationBean或者DelegatingFilterProxyRegistrationBean注册filter, 为什么可以这么实现呢?因为FilterRegistrationBean和DelegatingFilterProxyRegistrationBean都继承了AbstractFilterRegistrationBean抽象类,而该抽象类实现了ServletContextInitializer接口, Spring容 ...
零售行业优惠规则分析
零售行业优惠规则分析1 优惠规则 5 要素1.1 满足优惠条件的动作这个要素,是指触发优惠规则的动作,主要包括买和满两种。
注:
在数学上,买是满的一种特殊情况,只不过做文本串分析时,要同时考虑到这两种文本描述。
在电商行业,触发优惠的动作还包括:晒单、微博分享、微信关注、给好评、收藏、新用户注册、手机下单等行为,这里我只叙述与商品和订单相关的,与其它行为(注册、营销、手机下单等)相关的暂忽略。
抽奖,中奖要看运气,所以这时也暂不讨论
1.1.1 买只要买就优惠,如买赠(买 1 送 1)、买立减(买此商品立减 5 元)
1.1.2 满如满 88 减 18
1.2 优惠条件作用对象这个要素,是指满的对象(上文已解释,买其实是满的一种特殊情况,故此处叙述时合并),满什么条件,主要有三种:
1.2.1 订单金额(抵扣前金额)如满 88 元减 18 元
1.2.2 实付金额(抵扣后金额)如实付 100 元再返 20 元代金券
1.2.3 商品数量如买二送三,满 2 件每件 165 元,39 元任选三件
1.3 优惠方式这个要素是指,商家以什么方式给予消费者优惠。
1.3.1 减在订单金额中 ...
03-网络抓包和代理工具:Whistle
Whistle 官网
Whistle 官网:https://wproxy.org/whistle/
Whistle 的 GitHub:https://github.com/avwo/whistle
Whistle 安装启动1、Whistle 安装(1)通过 npm 安装 Whistle
2、启动 whistlew2 start
然后在浏览器输入http://127.0.0.1:8899/ 即可打开代理配置的页面。
3、配置代理chrome浏览器配置代理:
暂略。
Firefox浏览器配置代理:
4、安装证书并添加信任:
手机设置代理连接好指定的wifi后,点击那个wifi里的设置,将「代理」那一项,设置为手动,然后输入ip(电脑上的ip)、端口号(8899)。然后就可以通过电脑上的whistle工具,查看手机的网页请求。
注意,要保证手机和电脑在同一个网络下。
捕获和拦截https请求whistle安装证书后,可以拦截 https 请求。但是,我现在又不想拦截https请求了,该怎么卸载证书呢?
我发现,证书无法卸载,正确的操作是:
上图中,把红框部分,去掉勾选,就不捕获h ...
Atom在前端的使用
常用插件
Emmet:快速生成HTML片段,比如输入ul>li*3可以快速生成:
<ul> <li></li> <li></li> <li></li></ul>
详细地址,Emmet教程
Snippets:快速生成 js 代码片段(用来处理代码片段的模板输出),详细地址
Tree View:文件浏览器,详细地址
file icons:文件识别图标,使用这个插件会让你的编辑器显示对应的图标,详细地址
language-javascript-jsx:jsx语法高亮 ,详细地址
language-vue:vue语法高亮,详细地址
linter-eslint:eslint插件,详细地址
vue-snippets:vue代码片段,详细地址
pigments:颜色显示器,详细地址
linter-eslint:语法检查
Atom-Beautify:代码格式化
参考链接:https://github.com/cucygh/JDFinance/blob/master/i ...
Emmet in VS Code
前言Emmet可以极大的提高 html 和 css 的编写效率,它提供了一种非常简练的语法规则。
举个例子,我们在编辑器中输入缩写代码:ul>li*6 ,然后按下 Tab 键,即可得到如下代码片段:
<ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li></ul>
如何在某个语言中打开 Emmet 支持默认情况下,你可以直接在 html、haml、jade、slim、jsx、xml、xsl、css、scss、sass、less、stylus、handlebars、php 和 javascriptreact 中使用 Emmet 。
但对于其他语言,你也可以通过如下设置将其打开:
"emmet.includeLanguages": { "javascript&q ...
GitHub的使用
GitHub的使用GitHub添加wiki参考链接:
https://juejin.im/post/5a3216c8f265da43333e6b54
GitHub项目添加 license参考链接:
https://blog.csdn.net/qq_35246620/article/details/77647234
GitHub 引用图片的另一种方式参考链接:
关于markdown文件插入图片遇到的小问题和解决办法
Mac安装和配置iTerm2
参考链接
iTerm2 + Oh My Zsh 打造舒适终端体验
安装oh my zsh失败:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
Sublime Text在前端中的使用
新建文件时快速生成Html安装如下插件:
FileHeader:自动创建文件开头模板,并且会根据最后的保存时间修改更新时间。官网链接。
CSS Format:css格式化。
Emmet:它能够让你在编辑器中书写CSS和HTML的缩写并且动态地拓展它,是一个能大幅度提高前端开发效率的一个工具。这个软件的安装过程比较久。官网教程。
开始使用:
新建文件,输入html:5,按[Ctrl + E] 或者 Tab 键,
参考链接:Sublime Text 新建文件快速生成Html【头部信息】和【代码补全】、【汉化】
常用插件SublimeCodeIntel:JavaScript代码自动提示(不好用)安装完成后,通过路径Perferences->Package Settings->SublimeCodeIntel->Setting - Defalut打开配置文件。
将
"codeintel_selected_catalogs": ["jQuery"]
改为:
"codeintel_selected_catalogs" ...
WebStorm的使用
WebStorm的简单设置1、主题修改:可能大家会觉得软件的界面不太好看,我们可以换一下主题。选择菜单栏“File–settings–appearance–theme”,主题选择 Dracula:
2、导入第三方主题:系统提供的两种主题可能都不太好看,我们可以进入网站http://color-themes.com/来获取第三方主题,这里推荐两个主题,大家二选一即可:
Sublime
Material
上图中,在网站http://color-themes.com/中将主题下载之后,是一个jar包。那怎么导入到WebStorm呢?
别着急,回到WebStorm,选择菜单栏“ File-Import Settings”,将下载好的jar包导入即可。
3、代码字体修改:选择菜单栏“File–settings–Editor–Font”:
上图中,点击红框部分,然后弹出如下界面:
我们在上图中修改代码的字体。
修改完之后发现 WebStorm 的一些默认字体(比如侧边栏的工程目录的字体)并没有发生变化,如果想改的话,也可以改(我个人一般是不改的)。
4、关闭更新:如下图所示:
...
chrome浏览器
控制台的使用控制台查看源码控制台的Sources标签可以查看源码。按住快捷键「cmd + P」,可以根据文件名查找源码文件。
其他show user agent shadow DOM
把上图中的红框部分打钩。