首页
工具
心境语句
相册
建站轨迹
关于
Search
1
微信小程序:计算属性的两种体现方式及应用场景
1,689 阅读
2
Antd Upload 组件上传文件接收数据流并下载
1,231 阅读
3
unlock-music工具介绍
809 阅读
4
[C#]使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行
720 阅读
5
C#插件火车头采集器动态切换代理IP,及自动切换UserAgent
673 阅读
react
typecho
ASP
Centos
MYSQL
PHP
Sql server
Javascript
nodejs
数据采集
.NET
git
编程算法
管理及流程
Vue
微信小程序
android
python
mongodb
登录
Search
标签搜索
kotlin
node-sass
nuxtjs
C#火车头插件
火车头采集器
火车头代理
C#反编译
程序逆向
dnSpy教程
Antd
InputNumber
NPM教程
NPM命令
rrweb教程
git慢
git镜像
vim命令
git命令
网页音乐插件
网页播放器
Elysian
累计撰写
77
篇文章
累计收到
0
条评论
首页
栏目
react
typecho
ASP
Centos
MYSQL
PHP
Sql server
Javascript
nodejs
数据采集
.NET
git
编程算法
管理及流程
Vue
微信小程序
android
python
mongodb
页面
工具
心境语句
相册
建站轨迹
关于
搜索到
77
篇与
Elysian
的结果
2021-11-04
使用kotlinx书写android实践及常见问题处理
Kotlin中找不到kotlinx解决方法在初始化Kotlin界面布局时需引用kotinx来绑定布局import kotlinx.android.synthetic.main.activity_money.*找不到kotlinx时在gradle文件中加入apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions'kotlinx书写android实践实现效果如上图,想要kotlinx实现上面的效果,以为很简单,但却碰到不少的坑,毕竟还没学过kotlinx语法,不过最终还是弄出来了,在这里记录下。准备工欲善其事必先利其器,所以我们首先要准备好环境,在这里我使用的是AS 3.0预览版,本身就支持kotlinx,使用2.x的要装插件支持,不过我觉得使用就使用3.0吧,毕竟是亲爹支持的,新建项目什么的省了,不知道的google下...开发MainActivity.ktimport android.os.Bundle import android.support.design.widget.Snackbar import android.support.v7.app.AppCompatActivity import android.view.Menu import android.view.MenuItem import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) supportFragmentManager.beginTransaction() .add(R.id.fragment, MainActivityFragment(), "MainActivityFragment") .commit(); fab.setOnClickListener { view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show() } } override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. menuInflater.inflate(R.menu.menu_main, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. return when (item.itemId) { R.id.action_settings -> true else -> super.onOptionsItemSelected(item) } } }这里要注意下,由于kotlinx与java的语法风格不一样,所以要特别注意:继承不再写extends,而是直接:表示;使用类里面的成员或方法时,直接 supportFragmentManager.beginTransaction(),而不再 getSupportFragmentManager().beginTransaction(),很简洁;获取控件时,没有了findViewById,而是直接使用id来引用,不过这里要注意,引入的时候记得引入 import kotlinx.android.synthetic.main.activity_main.* 这个。activity_main.xml<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.jhworks.rxjavademo.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/fragment" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" app:srcCompat="@android:drawable/ic_dialog_email"/> </android.support.design.widget.CoordinatorLayout>MainActivityFragment.mkimport android.os.Bundle import android.support.v4.app.Fragment import android.support.v7.widget.LinearLayoutManager import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import kotlinx.android.synthetic.main.fragment_main.* /** * A placeholder fragment containing a simple view. */ class MainActivityFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_main, container, false) } override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) recycler_view.layoutManager = LinearLayoutManager(context) val list = ArrayList<String>() var i: Int = 0 while (i < 10) { list.add("item---" + i) i++ } val adapter = ListAdapter(context) recycler_view.adapter = adapter adapter.setDataList(list) } }ListAdapter.ktimport android.content.Context import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.ViewGroup /** * @author LiaoJH * @VERSION 1.0 * email: 583125288@qq.com * @DESC TODO */ class ListAdapter(context: Context) : RecyclerView.Adapter<ListHolder>() { private var mLayoutInflate: LayoutInflater = LayoutInflater.from(context) private var mDataList: List<String>? = null fun setDataList(dataList: List<String>) { mDataList = dataList } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ListHolder { return ListHolder(mLayoutInflate.inflate(R.layout.list_item_layout, parent, false)) } override fun getItemCount(): Int { if (mDataList == null) return 0 else return mDataList?.size as Int } override fun onBindViewHolder(holder: ListHolder?, position: Int) { holder?.bindData(mDataList?.get(position) as String) } }list_item_layout.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/name_tv" android:layout_width="match_parent" android:layout_height="40dp" android:paddingLeft="20dp" android:gravity="center_vertical" android:text="Item" /> </LinearLayout>ListHolder.ktimport android.support.v7.widget.RecyclerView import android.view.View import android.widget.TextView /** * @author LiaoJH * @VERSION 1.0 * email: 583125288@qq.com * @DESC TODO */ class ListHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) { private var mNameTv: TextView = itemView?.findViewById(R.id.name_tv) as TextView fun bindData(name: String) { mNameTv.text = name } }这样就能实现开头的效果了,第一次使用kotlinx,还是有不少坑,在此记录下。参考资料:https://www.jianshu.com/p/07fb921e1248
2021年11月04日
265 阅读
0 评论
0 点赞
2021-10-27
centos命令上传
首先安装 lrzszyum -y install lrzsz 运行 rz 命令; 在弹出的窗口选择需要上传的文件,文件会被上传至对应的目录下运行 sz file.name 在弹出的窗口选择保存文件的位置,文件会被下载至对应的目录下
2021年10月27日
107 阅读
0 评论
0 点赞
2021-10-27
CentOS7安装PHP
1、下载php wget https://www.php.net/distributions/php-7.4.22.tar.gz 这里下载的是7.4.22,其他版本官网下载2、解压 tar -zvxf php-7.4.22.tar.gz 3、进入目录 cd php-7.4.22 4、进行预编译 ./configure --prefix=/home/php --enable-fpm 后面编译携带参数可以使用 ./configure --help 查看具体说明 --prefix=/home/php #这里是指定安装目录 --enable-fpm #这里是PHPFastCGI管理器,为了后面Nginx能解析PHP 后面可以加一些常用的PHP扩展一起编译 , 这样安装后就自带这些扩展。出现错误 configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met: 解决方法: yum -y install libxml2-devel出现错误 configure: error: Package requirements (sqlite3 > 3.7.4) were not met: 解决方法: yum -y install sqlite-devel出现表示预编译成功5、安装 make && make install 这里需要点时间安装成功,到这里才发现我装错地方了,不过不影响使用。6、启动 复制代码cd /home/php/ #先进入安装目录 mv ./etc/php-fpm.conf.default ./etc/php-fpm.conf #重命名配置文件 mv ./etc/php-fpm.d/www.conf.default ./etc/php-fpm.d/www.conf #重命名配置文件 ./sbin/php-fpm #启动 ps -aux |grep php-fpm #查看启动状态(下面成功启动)  复制代码7、使用Nginx解析PHP, 编辑文章 centOS7安装、配置nginx,常用命令及禁用IP访问 进入到nginx安装目录 cd /opt/nginx/ 修改配置文件 vim ./conf/nginx.conf 修改内容如下(1)增加index.php(2)取消注释(3)修改路径保存退出 ,重启Nginx ./sbin/nginx -s reload 然后在 html 目录下面 vim index.php 写入内容保存退出,打开浏览器访问 结束安装。参考资料https://www.cnblogs.com/-wei/p/15222477.html
2021年10月27日
177 阅读
0 评论
0 点赞
2021-10-26
centOS7安装、配置nginx,常用命令及禁用IP访问
安装所需插件1、安装gccgcc是linux下的编译器在此不多做解释,感兴趣的小伙伴可以去查一下相关资料,它可以编译 C,C++,Ada,Object C和Java等语言命令:查看gcc版本gcc -v一般阿里云的centOS7里面是都有的,没有安装的话会提示命令找不到,安装命令:yum -y install gcc2、pcre、pcre-devel安装pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。安装命令:yum install -y pcre pcre-devel3、zlib安装zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装安装命令:yum install -y zlib zlib-devel4、安装opensslopenssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔。。。。。。安装命令:yum install -y openssl openssl-devel安装nginx1、下载nginx安装包wget http://nginx.org/download/nginx-1.9.9.tar.gz 2、把压缩包解压到usr/local/javatar -zxvf nginx-1.9.9.tar.gz3、切换到cd /usr/local/java/nginx-1.9.9/下面执行三个命令:./configure make make install4、切换到/usr/local/nginx安装目录5、配置nginx的配置文件nginx.conf文件,主要也就是端口可以按照自己服务器的端口使用情况来进行配置ESC键,wq!强制保存并退出6、启动nginx服务切换目录到/usr/local/nginx/sbin下面启动nginx命令:./nginx7、查看nginx服务是否启动成功ps -ef | grep nginx8、访问你的服务器IP显示说明安装和配置都没问题OK了nginx.conf说明#user nobody; worker_processes 1; #工作进程:数目。根据硬件调整,通常等于cpu数量或者2倍cpu数量。 #错误日志存放路径 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; # nginx进程pid存放路径 events { worker_connections 1024; # 工作进程的最大连接数量 } http { include mime.types; #指定mime类型,由mime.type来定义 default_type application/octet-stream; # 日志格式设置 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; #用log_format指令设置日志格式后,需要用access_log来指定日志文件存放路径 sendfile on; #指定nginx是否调用sendfile函数来输出文件,对于普通应用,必须设置on。 如果用来进行下载等应用磁盘io重负载应用,可设着off,以平衡磁盘与网络io处理速度,降低系统uptime。 #tcp_nopush on; #此选项允许或禁止使用socket的TCP_CORK的选项,此选项仅在sendfile的时候使用 #keepalive_timeout 0; #keepalive超时时间 keepalive_timeout 65; #gzip on; #开启gzip压缩服务 #虚拟主机 server { listen 80; #配置监听端口号 server_name localhost; #配置访问域名,域名可以有多个,用空格隔开 #charset koi8-r; #字符集设置 #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #错误跳转页 #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。 # root html; #根目录 # fastcgi_pass 127.0.0.1:9000; #请求转向定义的服务器列表 # fastcgi_index index.php; # 如果请求的Fastcgi_index URI是以 / 结束的, 该指令设置的文件会被附加到URI的后面并保存在变量$fastcig_script_name中 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; #监听端口 # server_name localhost; #域名 # ssl_certificate cert.pem; #证书位置 # ssl_certificate_key cert.key; #私钥位置 # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; #密码加密方式 # ssl_prefer_server_ciphers on; # ssl_prefer_server_ciphers on; # # location / { # root html; # index index.html index.htm; # } #} }重启1、验证nginx配置文件是否正确方法一:进入nginx安装目录sbin下,输入命令./nginx -t看到如下显示 `nginx.conf syntax is oknginx.conf test is successful` 说明配置文件正确!方法二:在启动命令-c前加-t2、重启Nginx服务方法一:进入nginx可执行目录sbin下,输入命令./nginx -s reload 即可方法二:查找当前nginx进程号,然后输入命令:kill -HUP 进程号 实现重启nginx服务nginx只允许域名访问,禁止ip访问这里介绍修改配置文件nginx.conf两种方法:1)在server段里插入如下正则:listen 80; server_name www.yuyangblog.net; if ($host != 'www.yuyangblog.net'){ return 403; }2)添加一个server新加的server(注意是新增,并不是在原有的server基础上修改)server { listen 80 default; server_name _; return 403; }参考资料:https://blog.csdn.net/qq_37345604/article/details/90034424https://www.cnblogs.com/codingcloud/p/5095066.htmlhttps://www.cnblogs.com/weifeng1463/p/9197971.html
2021年10月26日
146 阅读
0 评论
0 点赞
2021-10-24
centos7安装nodejs最新版本14以上
uname -aLinux vmcentos7-1 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linuxcd /usr/local/mkdir nodejscd nodejs到nodejs中文网,查看下载地址:wget https://npm.taobao.org/mirrors/node/v14.15.3/node-v14.15.3-linux-x64.tar.xzxz -d node-v14.15.3-linux-x64.tar.xztar -xvf node-v14.15.3-linux-x64.tarcd node-v14.15.3-linux-x64建立软连接,变为全局ln -s /usr/local/nodejs/node-v14.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /usr/local/nodejs/node-v14.15.3-linux-x64/bin/node /usr/local/bin/vim /etc/profile以下两个路径为加入nodejs路径export NODE_HOME=/usr/local/nodejs/node-v14.15.3-linux-x64export PATH=$NODE_HOME/bin:$PATH配置生效source /etc/profile成功node -vv14.15.3npm -v6.14.9yarn下载和安装安装的两种方式:方式1:使用msi安装:首先进入yarn的官网 https://yarnpkg.com/zh-hans/docs/install#windows-stable,然后选择稳定版进行下载。然后双击安装即可。我电脑里面其实已经通过msi文件安装了一个yarn,路径为:E:developyarn1.7.0\方式2:通过npm命令进行安装:执行命令npm install yarn -g (后面的可选参数-g,g代表global全局安装的意思)的安装语句时,会将安装的模块安装到C:UsersAdministratorAppDataRoamingnpm路径中。(2)查看安装路径如果不知道路径,可以使用where yarn命令查看电脑yarn的安装路径,可以看到我的安装路径为:E:developyarn1.7.0:查看yarn的安装路径(3)查看yarn版本号执行 yarn -v 或者yarn --version ,查看安装的yarn版本号,比如我的版本号是1.7.0。查看yarn的版本号yarn 换国内源yarn config set registry https://registry.npm.taobao.org/安装Node.js版本管理工具nvmgit clone git://github.com/creationix/nvm.git ~/nvm git下载仓库command -v nvm //验证安装设置启动自动运行echo "source ~/nvm/nvm.sh" >> ~/.bashrc source ~/.bashrcnvm list-remote //查看node版本nvm install v12.18.4 //安装node指定版本nvm use v12.18.4 //切换node版本转载至:https://www.cnblogs.com/xwhgr/p/14235167.html
2021年10月24日
377 阅读
0 评论
0 点赞
1
...
8
9
10
...
16