在这里让我们一起学习,一起提高!

flutter 开发APP环境搭建 不指定

jed , 2025-4-3 10:03 , 服务器技术 , 评论(0) , 阅读(56) , Via 本站原创
1、安装flutter
创建

D:\java\flutter

下载安装包,解压复制到该目录,运行flutter_console.bat。

添加环境变量path ,

D:\java\flutter\bin
D:\java\flutter\bin\cache\dart-sdk


环境变量:

PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

2、安装git
正常安装

3、安装chrome
谷歌浏览器,正常安装,ghost环境安装自带的不行。

4、Java环境
修改安装目录为
D:\java\jdk-1.8

修改jre安装目录为

D:\java\jre1.8.0_431


修改系统变量

JAVA_HOME

D:\java\jdk-1.8

JRE_HOME

D:\java\jre1.8.0_431

CLASSPATH

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;         //记得前面有个"."
Path

%JAVA_HOME%\bin
%JRE_HOME%\bin


5 安装amazon-corretto-17.0.14.7.1-windows-x64到

D:\Corretto


6、安装andorid studio

安装到

D:\androidstudio\androidSetup


其中选择自定义安装,选择安装SDK的目录

D:\androidstudio\SDK


无法下载 android SDk 配置服务器代理ip
网站检测 https://ping.chinaz.com/
在当前网站中输入 dl.google.com
host绑定比较快的地区

安装flutter和Dart插件

7、安装VisualStudioSetup

选择C++桌面开发和右侧的win10 SDK


一、在Ubuntu服务器上部署DeepSeek模型
要在Ubuntu上通过Ollama安装和使用DeepSeek模型,可以按照以下步骤操作:

安装Ollama
1、使用命令安装Ollama

curl -sSfL https://ollama.com/install.sh | sh

2、验证安装是否成功
安装完之后,您可以通过以下命令验证Ollama是否安装成功

ollama --version


下载DeepSeek模型

ollama pull deepseek-r1:14b


运行模型

ollama run deepseek-r1:14b


远程访问:


sudo vi /etc/systemd/system/ollama.service

增加

Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"



[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
#Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
#EnVironment="OLTAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
[Install]
#WantedBy=default.target
WantedBy=multi-user.target



重启服务

systemctl daemon-reload
systemctl restart ollama


验证Ollama服务是否正常运行

sudo netstat -tulpn | grep ollama


如图所示,则为正常。

点击在新窗口中浏览此图片

测试远程访问

curl http://192.168.2.150:11434


返回

Ollama is running


则正常

这样配置,让Nginx更安全 不指定

jed , 2025-1-25 14:04 , 服务器技术 , 评论(0) , 阅读(120) , Via 本站原创
引言
作为使用最广泛的Web服务器之一,Nginx的安全配置显得尤为重要。本文将从多个维度详细介绍如何增强Nginx的安全性,帮助开发运维人员构建一个更安全的Web服务环境。

一、基础安全配置
1. 隐藏版本号信息
默认情况下,Nginx会在响应头中显示版本号,这可能会给攻击者提供服务器信息。攻击者可以根据版本号查找对应版本的已知漏洞进行定向攻击。
前言
SSH(Secure Shell)是用于安全远程登录和管理服务器的协议,但其广泛使用也使其成为攻击者暴力破解的目标。SSH爆破攻击是指攻击者通过不断尝试用户名和密码组合,试图破解服务器的登录凭证。这种攻击不仅会消耗服务器资源,还可能导致系统被入侵。因此,采取有效的措施防止SSH爆破攻击至关重要。

实现方式
在Linux系统中,/etc/hosts.allow和/etc/hosts.deny文件用于控制对服务的访问权限。这两个文件的规则基于TCP Wrapper机制,允许系统管理员定义哪些IP地址或主机可以访问特定服务(如SSH)。

Linux服务器Inode清理优化 不指定

jed , 2024-9-20 10:13 , 服务器技术 , 评论(0) , 阅读(219) , Via 本站原创

for i in /*; do echo $i; find $i |wc -l|sort -nr; done

查找文件数量多的目录,进行清理
在Ubuntu 20.04上安装NVIDIA CUDA Toolkit的步骤如下:

确保你的系统已经安装了NVIDIA的官方驱动。

打开终端,并且添加NVIDIA的CUDA存储库的公钥:

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub


添加CUDA存储库到你的系统:

echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 /" | sudo tee /etc/apt/sources.list.d/cuda.list


更新软件包列表:

sudo apt update

安装CUDA Toolkit(你可以根据需要安装特定版本的CUDA Toolkit,例如cuda-11-2):

sudo apt install cuda-toolkit-11-2


配置环境变量。将以下内容添加到你的.bashrc或.profile文件中:

export PATH=/usr/local/cuda-11.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}


重新加载环境变量:

source ~/.bashrc


或者使用.profile文件的话使用source ~/.profile。

验证安装:

nvcc --version

以上步骤会安装CUDA Toolkit以及NVIDIA驱动,如果你已经安装了驱动,则不需要再次安装。请确保在执行这些步骤之前你已经备份了重要数据,并且你有足够的权限来修改系统设置。
最近在使用 apt-install 命令安装一些包时发现巨卡顿,一个原因肯定是自己家的网速有点慢了,当然最重要的原因还是 apt 源是国外的。网上看到了许多博主的换源过程,但发现他们的操作稍微有点复杂,而且需要修改 source 源文件,为了防止手残导致源文件出错,我直接使用 echo (输出命令)在终端修改源文件,添加源。

依次输入下面几行命令就可以成功将 apt 的源更换为国内的了,

sudo su
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >  /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >>  /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >>  /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >>  /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >>  /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >>  /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >>  /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >>  /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >>  /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >>  /etc/apt/sources.list
apt-get update
apt-get upgrade

使用代理加速docker pull 不指定

jed , 2024-6-7 09:45 , 服务器技术 , 评论(0) , 阅读(399) , Via 本站原创
创建配置目录和文件
docker pull是由守护进程dockerd执行,因此代理需添加在dockerd的systemd配置中。

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf


编辑proxy.conf文件


[Service]
Environment="HTTP_PROXY=socks5://192.168.2.103:10808"
Environment="HTTPS_PROXY=socks5://192.168.2.103:10808"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"



socks5://192.168.2.103:10808替换为你的本地代理

重载systemd并重启docker服务


sudo systemctl daemon-reload
sudo systemctl restart docker



参考

https://zhuanlan.zhihu.com/p/678307663
https://blog.csdn.net/qf0129/article/details/135729862

centos 安装nodejs 环境 不指定

jed , 2024-1-24 11:47 , 服务器技术 , 评论(0) , 阅读(553) , Via 本站原创
下载源码

wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz


解压源码

tar xvf node-v8.11.4-linux-x64.tar.xz


创建node目录

cd /usr/local/
mkdir node


复制程序

cd node-v8.11.4-linux-x64/
mv * /usr/local/node/


建立连接

ln -s /usr/local/node/bin/node /usr/local/bin/node
ln -s /usr/local/node/bin/npm /usr/local/bin/npm


测试一下

node -v
npm -v

示例一:


namespace service.threads;

//服务主线程
main = function(serviceName){
  import service;
  import thread.event;
  import fsys.log;
  import console;
  import sys.volume;
  import process;
  import fsys.dirWatcher;
  import fsys.dlg.dir;
  
  service.msgbox("服务已启动");
  console.open();
  //取所有分区信息
  var drives = sys.volume.getLogicalDrives()
  for(i,drv in drives){
    var info = sys.volume.getInfo( drv );
    if(info){
       var watchDir = info.drive;
       watcher = fsys.dirWatcher( watchDir )
       for( filename,action in watcher.eachChanges() ){
           fsys.log.print( watchDir + "\" + filename," -> ",action,'\r\n')
        console.log( watchDir + "\" + filename," -> ",action,'\r\n')
           }
      }
    
    }

}

//注意这也是一个独立的线程,用户控制服务停止或启动时都会触发此函数
control = function(control,eventType,pEventData){
    import service;
    import thread.event;
    
    var evtTask = thread.event("NT.SERVICE.CONTROL." + owner.serviceName,false);
    
    if( control == 0x1/*_SERVICE_CONTROL_STOP*/ ){  
        //控制线程中更新srvStatus,第一个参数只要指定需要更新的字段就行了
        service.updateStatus({currentState = 0x3/*_SERVICE_STOP_PENDING*/},owner.serviceName);
        evtTask.set();//使事件对象切换为有信号状态,使wait函数退出  
    }
    
    return 0x0/*_NOERROR*/
}



示例二:


namespace service.threads;

//服务主线程
main = function(serviceName){
  import service;
  import thread.event;
  import fsys.log;
  import console;
  import win.ui;
  import fsys.dirWatcher;
  import fsys.dlg.dir;
  
  //用win.form创建一个线程外包对象
  var winform = win.form();
  winform.messageOnly();//告诉他不需要显示窗口,只保留能处理消息的功能
  var watchDir = "C:";
  //创建监视线程
  winform.thrdWatcher = fsys.dirWatcher.thread(
    function(filename,action,actionText){
      fsys.log.print( watchDir + "\" + filename," -> ",action,'\r\n')
      console.log( watchDir + "\" + filename," -> ",action,'\r\n')
    }, watchDir);
  win.loopMessage();

}

//注意这也是一个独立的线程,用户控制服务停止或启动时都会触发此函数
control = function(control,eventType,pEventData){
    import service;
    import thread.event;
    
    var evtTask = thread.event("NT.SERVICE.CONTROL." + owner.serviceName,false);
    
    if( control == 0x1/*_SERVICE_CONTROL_STOP*/ ){  
        //控制线程中更新srvStatus,第一个参数只要指定需要更新的字段就行了
        service.updateStatus({currentState = 0x3/*_SERVICE_STOP_PENDING*/},owner.serviceName);
        evtTask.set();//使事件对象切换为有信号状态,使wait函数退出  
    }
    
    return 0x0/*_NOERROR*/
}

分页: 1/81 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]